package cn.janescott.inner.space.lib.support.message.register;


import cn.janescott.inner.space.lib.support.message.handler.MessageHandler;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 消费者注册中心
 * Created by Scott on 2018/5/30
 **/
public class MessageHandlerRegister {
    /**
     * 如果已经注册， 是否忽略
     * true 忽略
     * false 重新注册
     */
    private static boolean ignore = true;

    private Map<String, MessageHandler> messageHandlers = new ConcurrentHashMap<>();

    /**
     * 注册消息处理器
     *
     * @param name    名称
     * @param handler 处理器
     */
    public void register(String name, MessageHandler handler) throws Exception {
        if (null != messageHandlers.get(name) && ignore) {
            return;
        }
        if (null != messageHandlers.get(name) && !ignore) {
            unregister(name);
        }

        messageHandlers.put(name, handler);
    }

    /**
     * 注销消息处理器
     *
     * @param name 名称
     */
    public void unregister(String name) throws Exception {
        if (null != messageHandlers.get(name)) {
            messageHandlers.remove(name);
        }
    }

    /**
     * 查找消息处理器
     *
     * @param name 名称
     * @return
     */
    public MessageHandler lookup(String name) {
        return messageHandlers.get(name);
    }
}
